<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Cheetah Software: MiniCheetahHardwareBridge Class Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Cheetah Software
   &#160;<span id="projectnumber">1.0</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
      <li><a href="../../files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="../../search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="../../inherits.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('d0/dc5/class_mini_cheetah_hardware_bridge.html','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="../../d7/d8d/class_mini_cheetah_hardware_bridge-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">MiniCheetahHardwareBridge Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p><code>#include &lt;<a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html">HardwareBridge.h</a>&gt;</code></p>
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-0-trigger" src="../../closed.png" alt="+"/> Inheritance diagram for MiniCheetahHardwareBridge:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><img src="../../d2/dec/class_mini_cheetah_hardware_bridge__inherit__graph.png" border="0" usemap="#_mini_cheetah_hardware_bridge_inherit__map" alt="Inheritance graph"/></div>
<map name="_mini_cheetah_hardware_bridge_inherit__map" id="_mini_cheetah_hardware_bridge_inherit__map">
</map>
</div>
<div id="dynsection-1" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-1-trigger" src="../../closed.png" alt="+"/> Collaboration diagram for MiniCheetahHardwareBridge:</div>
<div id="dynsection-1-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-1-content" class="dyncontent" style="display:none;">
<div class="center"><img src="../../d0/dc6/class_mini_cheetah_hardware_bridge__coll__graph.png" border="0" usemap="#_mini_cheetah_hardware_bridge_coll__map" alt="Collaboration graph"/></div>
<map name="_mini_cheetah_hardware_bridge_coll__map" id="_mini_cheetah_hardware_bridge_coll__map">
</map>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a4c281b577cbb4c66b8844784275bf526"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc5/class_mini_cheetah_hardware_bridge.html#a4c281b577cbb4c66b8844784275bf526">MiniCheetahHardwareBridge</a> (<a class="el" href="../../d4/d6a/class_robot_controller.html">RobotController</a> *)</td></tr>
<tr class="separator:a4c281b577cbb4c66b8844784275bf526"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac33018c7266f82d92828cfda21b9b6b2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc5/class_mini_cheetah_hardware_bridge.html#ac33018c7266f82d92828cfda21b9b6b2">runSpi</a> ()</td></tr>
<tr class="separator:ac33018c7266f82d92828cfda21b9b6b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2ed52f47d4bfb659e1d4d74930774dc"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc5/class_mini_cheetah_hardware_bridge.html#aa2ed52f47d4bfb659e1d4d74930774dc">initHardware</a> ()</td></tr>
<tr class="separator:aa2ed52f47d4bfb659e1d4d74930774dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a685c0e118f44327e7734119bd232d484"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc5/class_mini_cheetah_hardware_bridge.html#a685c0e118f44327e7734119bd232d484">run</a> ()</td></tr>
<tr class="separator:a685c0e118f44327e7734119bd232d484"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afadb8b2e0994d757bf8caf0178aa5dd3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc5/class_mini_cheetah_hardware_bridge.html#afadb8b2e0994d757bf8caf0178aa5dd3">abort</a> (const std::string &amp;reason)</td></tr>
<tr class="separator:afadb8b2e0994d757bf8caf0178aa5dd3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae554de517ea00810279227dd5232d05e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc5/class_mini_cheetah_hardware_bridge.html#ae554de517ea00810279227dd5232d05e">abort</a> (const char *reason)</td></tr>
<tr class="separator:ae554de517ea00810279227dd5232d05e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_class_hardware_bridge"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_class_hardware_bridge')"><img src="../../closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="../../d8/dd8/class_hardware_bridge.html">HardwareBridge</a></td></tr>
<tr class="memitem:a5de3c6c9f311c568c2ba4468e9b73313 inherit pub_methods_class_hardware_bridge"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#a5de3c6c9f311c568c2ba4468e9b73313">HardwareBridge</a> (<a class="el" href="../../d4/d6a/class_robot_controller.html">RobotController</a> *robot_ctrl)</td></tr>
<tr class="separator:a5de3c6c9f311c568c2ba4468e9b73313 inherit pub_methods_class_hardware_bridge"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abbe4b85c2153d1c4f9718b678587cc7b inherit pub_methods_class_hardware_bridge"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#abbe4b85c2153d1c4f9718b678587cc7b">prefaultStack</a> ()</td></tr>
<tr class="separator:abbe4b85c2153d1c4f9718b678587cc7b inherit pub_methods_class_hardware_bridge"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b4e33274b7f6f1a78987d9b5480f9b5 inherit pub_methods_class_hardware_bridge"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#a6b4e33274b7f6f1a78987d9b5480f9b5">setupScheduler</a> ()</td></tr>
<tr class="separator:a6b4e33274b7f6f1a78987d9b5480f9b5 inherit pub_methods_class_hardware_bridge"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a92eb174542c2885280ad77c257d887b8 inherit pub_methods_class_hardware_bridge"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#a92eb174542c2885280ad77c257d887b8">initError</a> (const char *reason, bool printErrno=false)</td></tr>
<tr class="separator:a92eb174542c2885280ad77c257d887b8 inherit pub_methods_class_hardware_bridge"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4a8078bc3b30d7260281598990243262 inherit pub_methods_class_hardware_bridge"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#a4a8078bc3b30d7260281598990243262">initCommon</a> ()</td></tr>
<tr class="separator:a4a8078bc3b30d7260281598990243262 inherit pub_methods_class_hardware_bridge"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a038873f692d1128e00c75f2b897ebdbd inherit pub_methods_class_hardware_bridge"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#a038873f692d1128e00c75f2b897ebdbd">~HardwareBridge</a> ()</td></tr>
<tr class="separator:a038873f692d1128e00c75f2b897ebdbd inherit pub_methods_class_hardware_bridge"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6905c9dcc7d67badb4bcd79ef6f62a1 inherit pub_methods_class_hardware_bridge"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#ae6905c9dcc7d67badb4bcd79ef6f62a1">handleGamepadLCM</a> (const lcm::ReceiveBuffer *rbuf, const std::string &amp;chan, const gamepad_lcmt *msg)</td></tr>
<tr class="separator:ae6905c9dcc7d67badb4bcd79ef6f62a1 inherit pub_methods_class_hardware_bridge"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6d23f7fccce82cb3a351dd48c4433be inherit pub_methods_class_hardware_bridge"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#aa6d23f7fccce82cb3a351dd48c4433be">handleInterfaceLCM</a> ()</td></tr>
<tr class="separator:aa6d23f7fccce82cb3a351dd48c4433be inherit pub_methods_class_hardware_bridge"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa5bd1ccd29e15e2f0ecb5b3f65795784 inherit pub_methods_class_hardware_bridge"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#aa5bd1ccd29e15e2f0ecb5b3f65795784">handleControlParameter</a> (const lcm::ReceiveBuffer *rbuf, const std::string &amp;chan, const control_parameter_request_lcmt *msg)</td></tr>
<tr class="separator:aa5bd1ccd29e15e2f0ecb5b3f65795784 inherit pub_methods_class_hardware_bridge"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83a317be30bef73635e34beb19a303ac inherit pub_methods_class_hardware_bridge"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#a83a317be30bef73635e34beb19a303ac">publishVisualizationLCM</a> ()</td></tr>
<tr class="separator:a83a317be30bef73635e34beb19a303ac inherit pub_methods_class_hardware_bridge"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa3e2460f9609470b32190353d9da2cd9 inherit pub_methods_class_hardware_bridge"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#aa3e2460f9609470b32190353d9da2cd9">run_sbus</a> ()</td></tr>
<tr class="separator:aa3e2460f9609470b32190353d9da2cd9 inherit pub_methods_class_hardware_bridge"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:aa99804e2d2e2041ab988f34f15e385ae"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../df/d06/struct_vector_nav_data.html">VectorNavData</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc5/class_mini_cheetah_hardware_bridge.html#aa99804e2d2e2041ab988f34f15e385ae">_vectorNavData</a></td></tr>
<tr class="separator:aa99804e2d2e2041ab988f34f15e385ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acfed6143e7864dcb64345e22223455c1"><td class="memItemLeft" align="right" valign="top">lcm::LCM&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc5/class_mini_cheetah_hardware_bridge.html#acfed6143e7864dcb64345e22223455c1">_spiLcm</a></td></tr>
<tr class="separator:acfed6143e7864dcb64345e22223455c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pro_attribs_class_hardware_bridge"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_class_hardware_bridge')"><img src="../../closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="../../d8/dd8/class_hardware_bridge.html">HardwareBridge</a></td></tr>
<tr class="memitem:a0389f737fe143e8a4bbf9433c129d149 inherit pro_attribs_class_hardware_bridge"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d31/class_periodic_task_manager.html">PeriodicTaskManager</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#a0389f737fe143e8a4bbf9433c129d149">taskManager</a></td></tr>
<tr class="separator:a0389f737fe143e8a4bbf9433c129d149 inherit pro_attribs_class_hardware_bridge"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa63048fffaaddf1c55a8f18a785396ec inherit pro_attribs_class_hardware_bridge"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../dc/d6d/class_print_task_status.html">PrintTaskStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#aa63048fffaaddf1c55a8f18a785396ec">statusTask</a></td></tr>
<tr class="separator:aa63048fffaaddf1c55a8f18a785396ec inherit pro_attribs_class_hardware_bridge"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0928b007abfd50e0edc7d38de4bce932 inherit pro_attribs_class_hardware_bridge"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d4/d51/struct_gamepad_command.html">GamepadCommand</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#a0928b007abfd50e0edc7d38de4bce932">_gamepadCommand</a></td></tr>
<tr class="separator:a0928b007abfd50e0edc7d38de4bce932 inherit pro_attribs_class_hardware_bridge"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac5270dbb17267e1ac3681ce92215296b inherit pro_attribs_class_hardware_bridge"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d3/d60/struct_visualization_data.html">VisualizationData</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#ac5270dbb17267e1ac3681ce92215296b">_visualizationData</a></td></tr>
<tr class="separator:ac5270dbb17267e1ac3681ce92215296b inherit pro_attribs_class_hardware_bridge"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9442d44776906a9a3c9cea911784891 inherit pro_attribs_class_hardware_bridge"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d0/d6d/struct_cheetah_visualization.html">CheetahVisualization</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#af9442d44776906a9a3c9cea911784891">_mainCheetahVisualization</a></td></tr>
<tr class="separator:af9442d44776906a9a3c9cea911784891 inherit pro_attribs_class_hardware_bridge"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4407e65acb5e3afc54adee8adeb5627f inherit pro_attribs_class_hardware_bridge"><td class="memItemLeft" align="right" valign="top">lcm::LCM&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#a4407e65acb5e3afc54adee8adeb5627f">_interfaceLCM</a></td></tr>
<tr class="separator:a4407e65acb5e3afc54adee8adeb5627f inherit pro_attribs_class_hardware_bridge"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a21be7448839aeabc1735129b851bfd42 inherit pro_attribs_class_hardware_bridge"><td class="memItemLeft" align="right" valign="top">lcm::LCM&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#a21be7448839aeabc1735129b851bfd42">_visualizationLCM</a></td></tr>
<tr class="separator:a21be7448839aeabc1735129b851bfd42 inherit pro_attribs_class_hardware_bridge"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b91d691aac1ad94f0c600e2ec2e084a inherit pro_attribs_class_hardware_bridge"><td class="memItemLeft" align="right" valign="top">control_parameter_respones_lcmt&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#a4b91d691aac1ad94f0c600e2ec2e084a">_parameter_response_lcmt</a></td></tr>
<tr class="separator:a4b91d691aac1ad94f0c600e2ec2e084a inherit pro_attribs_class_hardware_bridge"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa700e6321dfd8badb647e198349d3fb7 inherit pro_attribs_class_hardware_bridge"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d5/d09/struct_spi_data.html">SpiData</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#aa700e6321dfd8badb647e198349d3fb7">_spiData</a></td></tr>
<tr class="separator:aa700e6321dfd8badb647e198349d3fb7 inherit pro_attribs_class_hardware_bridge"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ccd0cdd11a61439a08f8f7301f3294f inherit pro_attribs_class_hardware_bridge"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d0/ddd/struct_spi_command.html">SpiCommand</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#a5ccd0cdd11a61439a08f8f7301f3294f">_spiCommand</a></td></tr>
<tr class="separator:a5ccd0cdd11a61439a08f8f7301f3294f inherit pro_attribs_class_hardware_bridge"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a80a343c681ff51562b875190a7b2f4dc inherit pro_attribs_class_hardware_bridge"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#a80a343c681ff51562b875190a7b2f4dc">_firstRun</a> = true</td></tr>
<tr class="separator:a80a343c681ff51562b875190a7b2f4dc inherit pro_attribs_class_hardware_bridge"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae259e674ae1cd4f3043fdd0236038617 inherit pro_attribs_class_hardware_bridge"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d9/d42/class_robot_runner.html">RobotRunner</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#ae259e674ae1cd4f3043fdd0236038617">_robotRunner</a> = nullptr</td></tr>
<tr class="separator:ae259e674ae1cd4f3043fdd0236038617 inherit pro_attribs_class_hardware_bridge"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad52a70b35d6c19a736ea3287d974c66d inherit pro_attribs_class_hardware_bridge"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d0/d73/class_robot_control_parameters.html">RobotControlParameters</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#ad52a70b35d6c19a736ea3287d974c66d">_robotParams</a></td></tr>
<tr class="separator:ad52a70b35d6c19a736ea3287d974c66d inherit pro_attribs_class_hardware_bridge"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab0027a2f7c8b03445478043806ec230c inherit pro_attribs_class_hardware_bridge"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d0/d99/c_types_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#ab0027a2f7c8b03445478043806ec230c">_iterations</a> = 0</td></tr>
<tr class="separator:ab0027a2f7c8b03445478043806ec230c inherit pro_attribs_class_hardware_bridge"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac1696d3ecb97c660ffd9a13771892a9 inherit pro_attribs_class_hardware_bridge"><td class="memItemLeft" align="right" valign="top">std::thread&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#aac1696d3ecb97c660ffd9a13771892a9">_interfaceLcmThread</a></td></tr>
<tr class="separator:aac1696d3ecb97c660ffd9a13771892a9 inherit pro_attribs_class_hardware_bridge"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa78e0f3c26667723c9501963aafa9173 inherit pro_attribs_class_hardware_bridge"><td class="memItemLeft" align="right" valign="top">volatile bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#aa78e0f3c26667723c9501963aafa9173">_interfaceLcmQuit</a> = false</td></tr>
<tr class="separator:aa78e0f3c26667723c9501963aafa9173 inherit pro_attribs_class_hardware_bridge"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab8487082663e527210d4e1d89387902b inherit pro_attribs_class_hardware_bridge"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d8/d86/class_control_parameters.html">ControlParameters</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#ab8487082663e527210d4e1d89387902b">_userControlParameters</a> = nullptr</td></tr>
<tr class="separator:ab8487082663e527210d4e1d89387902b inherit pro_attribs_class_hardware_bridge"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb8b07d91413a757e0085ad8ac5fa300 inherit pro_attribs_class_hardware_bridge"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#aeb8b07d91413a757e0085ad8ac5fa300">_port</a></td></tr>
<tr class="separator:aeb8b07d91413a757e0085ad8ac5fa300 inherit pro_attribs_class_hardware_bridge"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock">
<p>Definition at line <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00072">72</a> of file <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html">HardwareBridge.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a4c281b577cbb4c66b8844784275bf526"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">MiniCheetahHardwareBridge::MiniCheetahHardwareBridge </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../d4/d6a/class_robot_controller.html">RobotController</a> *&#160;</td>
          <td class="paramname"><em>robot_ctrl</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00201">201</a> of file <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html">HardwareBridge.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;    : <a class="code" href="../../d8/dd8/class_hardware_bridge.html#a5de3c6c9f311c568c2ba4468e9b73313">HardwareBridge</a>(robot_ctrl), <a class="code" href="../../d0/dc5/class_mini_cheetah_hardware_bridge.html#acfed6143e7864dcb64345e22223455c1">_spiLcm</a>(<a class="code" href="../../de/df0/utilities_8h.html#aa3945f023f4c554ec5670ac03ff82525">getLcmUrl</a>(255)) {}</div><div class="ttc" id="class_mini_cheetah_hardware_bridge_html_acfed6143e7864dcb64345e22223455c1"><div class="ttname"><a href="../../d0/dc5/class_mini_cheetah_hardware_bridge.html#acfed6143e7864dcb64345e22223455c1">MiniCheetahHardwareBridge::_spiLcm</a></div><div class="ttdeci">lcm::LCM _spiLcm</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00083">HardwareBridge.h:83</a></div></div>
<div class="ttc" id="utilities_8h_html_aa3945f023f4c554ec5670ac03ff82525"><div class="ttname"><a href="../../de/df0/utilities_8h.html#aa3945f023f4c554ec5670ac03ff82525">getLcmUrl</a></div><div class="ttdeci">std::string getLcmUrl(s64 ttl)</div><div class="ttdef"><b>Definition:</b> <a href="../../de/da5/utilities_8cpp_source.html#l00032">utilities.cpp:32</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_a5de3c6c9f311c568c2ba4468e9b73313"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#a5de3c6c9f311c568c2ba4468e9b73313">HardwareBridge::HardwareBridge</a></div><div class="ttdeci">HardwareBridge(RobotController *robot_ctrl)</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00025">HardwareBridge.h:25</a></div></div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="afadb8b2e0994d757bf8caf0178aa5dd3"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void MiniCheetahHardwareBridge::abort </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>reason</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a class="anchor" id="ae554de517ea00810279227dd5232d05e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void MiniCheetahHardwareBridge::abort </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>reason</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a class="anchor" id="aa2ed52f47d4bfb659e1d4d74930774dc"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void MiniCheetahHardwareBridge::initHardware </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00275">275</a> of file <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html">HardwareBridge.cpp</a>.</p>

<p>References <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00082">_vectorNavData</a>, <a class="el" href="../../d1/d62/rt__spi_8cpp_source.html#l00110">init_spi()</a>, <a class="el" href="../../db/d9f/rt__vectornav_8cpp_source.html#l00032">init_vectornav()</a>, <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00017">HardwareBridge::initError()</a>, and <a class="el" href="../../d0/df2/_i_m_u_types_8h_source.html#l00016">VectorNavData::quat</a>.</p>
<div class="fragment"><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;                                             {</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;  printf(<span class="stringliteral">&quot;[MiniCheetahHardware] Init vectornav\n&quot;</span>);</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;  <a class="code" href="../../d0/dc5/class_mini_cheetah_hardware_bridge.html#aa99804e2d2e2041ab988f34f15e385ae">_vectorNavData</a>.<a class="code" href="../../df/d06/struct_vector_nav_data.html#a373f86342f6a3c2b2b2ca995eb67ff58">quat</a> &lt;&lt; 1, 0, 0, 0;</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;  <span class="keywordflow">if</span> (!<a class="code" href="../../d3/dee/rt__vectornav_8h.html#aedc93ce31e71111cccb1c83ce82114de">init_vectornav</a>(&amp;<a class="code" href="../../d0/dc5/class_mini_cheetah_hardware_bridge.html#aa99804e2d2e2041ab988f34f15e385ae">_vectorNavData</a>)) {</div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;    <a class="code" href="../../d8/dd8/class_hardware_bridge.html#a92eb174542c2885280ad77c257d887b8">initError</a>(<span class="stringliteral">&quot;failed to initialize vectornav!\n&quot;</span>, <span class="keyword">false</span>);</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;  }</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;  <a class="code" href="../../d0/dae/rt__spi_8h.html#a8eb9780a3438ec02c70314744f91f3c7">init_spi</a>();</div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;  <span class="comment">// init spi</span></div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;  <span class="comment">// init sbus</span></div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;  <span class="comment">// init lidarlite</span></div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;  <span class="comment">// init LCM hardware logging thread</span></div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;}</div><div class="ttc" id="rt__vectornav_8h_html_aedc93ce31e71111cccb1c83ce82114de"><div class="ttname"><a href="../../d3/dee/rt__vectornav_8h.html#aedc93ce31e71111cccb1c83ce82114de">init_vectornav</a></div><div class="ttdeci">bool init_vectornav(VectorNavData *vd_data)</div><div class="ttdef"><b>Definition:</b> <a href="../../db/d9f/rt__vectornav_8cpp_source.html#l00032">rt_vectornav.cpp:32</a></div></div>
<div class="ttc" id="rt__spi_8h_html_a8eb9780a3438ec02c70314744f91f3c7"><div class="ttname"><a href="../../d0/dae/rt__spi_8h.html#a8eb9780a3438ec02c70314744f91f3c7">init_spi</a></div><div class="ttdeci">void init_spi()</div><div class="ttdef"><b>Definition:</b> <a href="../../d1/d62/rt__spi_8cpp_source.html#l00110">rt_spi.cpp:110</a></div></div>
<div class="ttc" id="struct_vector_nav_data_html_a373f86342f6a3c2b2b2ca995eb67ff58"><div class="ttname"><a href="../../df/d06/struct_vector_nav_data.html#a373f86342f6a3c2b2b2ca995eb67ff58">VectorNavData::quat</a></div><div class="ttdeci">Quat&lt; float &gt; quat</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/df2/_i_m_u_types_8h_source.html#l00016">IMUTypes.h:16</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_a92eb174542c2885280ad77c257d887b8"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#a92eb174542c2885280ad77c257d887b8">HardwareBridge::initError</a></div><div class="ttdeci">void initError(const char *reason, bool printErrno=false)</div><div class="ttdef"><b>Definition:</b> <a href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00017">HardwareBridge.cpp:17</a></div></div>
<div class="ttc" id="class_mini_cheetah_hardware_bridge_html_aa99804e2d2e2041ab988f34f15e385ae"><div class="ttname"><a href="../../d0/dc5/class_mini_cheetah_hardware_bridge.html#aa99804e2d2e2041ab988f34f15e385ae">MiniCheetahHardwareBridge::_vectorNavData</a></div><div class="ttdeci">VectorNavData _vectorNavData</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00082">HardwareBridge.h:82</a></div></div>
</div><!-- fragment -->
<p><div id="dynsection-2" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-2-trigger" src="../../closed.png" alt="+"/> Here is the call graph for this function:</div>
<div id="dynsection-2-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-2-content" class="dyncontent" style="display:none;">
<div class="center"><img src="../../d0/dc5/class_mini_cheetah_hardware_bridge_aa2ed52f47d4bfb659e1d4d74930774dc_cgraph.png" border="0" usemap="#d0/dc5/class_mini_cheetah_hardware_bridge_aa2ed52f47d4bfb659e1d4d74930774dc_cgraph" alt=""/></div>
<map name="d0/dc5/class_mini_cheetah_hardware_bridge_aa2ed52f47d4bfb659e1d4d74930774dc_cgraph" id="d0/dc5/class_mini_cheetah_hardware_bridge_aa2ed52f47d4bfb659e1d4d74930774dc_cgraph">
</map>
</div>
</p>

<p><div id="dynsection-3" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-3-trigger" src="../../closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-3-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-3-content" class="dyncontent" style="display:none;">
<div class="center"><img src="../../d0/dc5/class_mini_cheetah_hardware_bridge_aa2ed52f47d4bfb659e1d4d74930774dc_icgraph.png" border="0" usemap="#d0/dc5/class_mini_cheetah_hardware_bridge_aa2ed52f47d4bfb659e1d4d74930774dc_icgraph" alt=""/></div>
<map name="d0/dc5/class_mini_cheetah_hardware_bridge_aa2ed52f47d4bfb659e1d4d74930774dc_icgraph" id="d0/dc5/class_mini_cheetah_hardware_bridge_aa2ed52f47d4bfb659e1d4d74930774dc_icgraph">
</map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a685c0e118f44327e7734119bd232d484"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void MiniCheetahHardwareBridge::run </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00204">204</a> of file <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html">HardwareBridge.cpp</a>.</p>

<p>References <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00061">HardwareBridge::_firstRun</a>, <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00052">HardwareBridge::_gamepadCommand</a>, <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00054">HardwareBridge::_mainCheetahVisualization</a>, <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00069">HardwareBridge::_port</a>, <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00063">HardwareBridge::_robotParams</a>, <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00062">HardwareBridge::_robotRunner</a>, <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00059">HardwareBridge::_spiCommand</a>, <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00058">HardwareBridge::_spiData</a>, <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00067">HardwareBridge::_userControlParameters</a>, <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00082">_vectorNavData</a>, <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00053">HardwareBridge::_visualizationData</a>, <a class="el" href="../../d3/d41/_robot_runner_8h_source.html#l00056">RobotRunner::cheetahMainVisualization</a>, <a class="el" href="../../d3/d41/_robot_runner_8h_source.html#l00054">RobotRunner::controlParameters</a>, <a class="el" href="../../d3/d41/_robot_runner_8h_source.html#l00046">RobotRunner::driverCommand</a>, <a class="el" href="../../db/d28/_robot_runner_8cpp_source.html#l00028">RobotRunner::init()</a>, <a class="el" href="../../d2/dad/rt__sbus_8cpp_source.html#l00119">init_sbus()</a>, <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00030">HardwareBridge::initCommon()</a>, <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00275">initHardware()</a>, <a class="el" href="../../d2/d01/_control_parameters_8h_source.html#l00403">ControlParameters::isFullyInitialized()</a>, <a class="el" href="../../d9/d8e/cpp_types_8h.html#a78d284d08fd22d809fd436256f2cbc39a590425b506eb87eff1a64ed14ffd1498">MINI_CHEETAH</a>, <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00305">HardwareBridge::publishVisualizationLCM()</a>, <a class="el" href="../../d3/d41/_robot_runner_8h_source.html#l00047">RobotRunner::robotType</a>, <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00266">HardwareBridge::run_sbus()</a>, <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00293">runSpi()</a>, <a class="el" href="../../d3/d41/_robot_runner_8h_source.html#l00051">RobotRunner::spiCommand</a>, <a class="el" href="../../d3/d41/_robot_runner_8h_source.html#l00050">RobotRunner::spiData</a>, <a class="el" href="../../de/df7/_periodic_task_8cpp_source.html#l00020">PeriodicTask::start()</a>, <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00051">HardwareBridge::statusTask</a>, <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00050">HardwareBridge::taskManager</a>, <a class="el" href="../../d3/d41/_robot_runner_8h_source.html#l00048">RobotRunner::vectorNavData</a>, and <a class="el" href="../../d3/d41/_robot_runner_8h_source.html#l00055">RobotRunner::visualizationData</a>.</p>
<div class="fragment"><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;                                    {</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;  <a class="code" href="../../d8/dd8/class_hardware_bridge.html#a4a8078bc3b30d7260281598990243262">initCommon</a>();</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;  <a class="code" href="../../d0/dc5/class_mini_cheetah_hardware_bridge.html#aa2ed52f47d4bfb659e1d4d74930774dc">initHardware</a>();</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;  <span class="comment">//_robotRunner = new RobotRunner(&amp;taskManager, 0.001f, &quot;robot-control&quot;);</span></div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;  <a class="code" href="../../d8/dd8/class_hardware_bridge.html#ae259e674ae1cd4f3043fdd0236038617">_robotRunner</a>-&gt;<a class="code" href="../../d9/d42/class_robot_runner.html#ab68a04d6b506333426883633a6430656">driverCommand</a> = &amp;<a class="code" href="../../d8/dd8/class_hardware_bridge.html#a0928b007abfd50e0edc7d38de4bce932">_gamepadCommand</a>;</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;  <a class="code" href="../../d8/dd8/class_hardware_bridge.html#ae259e674ae1cd4f3043fdd0236038617">_robotRunner</a>-&gt;<a class="code" href="../../d9/d42/class_robot_runner.html#a58767b23c3b78f2d6f7a5af7474d39cf">spiData</a> = &amp;<a class="code" href="../../d8/dd8/class_hardware_bridge.html#aa700e6321dfd8badb647e198349d3fb7">_spiData</a>;</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;  <a class="code" href="../../d8/dd8/class_hardware_bridge.html#ae259e674ae1cd4f3043fdd0236038617">_robotRunner</a>-&gt;<a class="code" href="../../d9/d42/class_robot_runner.html#a13f4f83d3364befdad7a218f2c16afbb">spiCommand</a> = &amp;<a class="code" href="../../d8/dd8/class_hardware_bridge.html#a5ccd0cdd11a61439a08f8f7301f3294f">_spiCommand</a>;</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;  <a class="code" href="../../d8/dd8/class_hardware_bridge.html#ae259e674ae1cd4f3043fdd0236038617">_robotRunner</a>-&gt;<a class="code" href="../../d9/d42/class_robot_runner.html#ac36f7f6395167f998afe23f6d4f86c82">robotType</a> = <a class="code" href="../../d9/d8e/cpp_types_8h.html#a78d284d08fd22d809fd436256f2cbc39a590425b506eb87eff1a64ed14ffd1498">RobotType::MINI_CHEETAH</a>;</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;  <a class="code" href="../../d8/dd8/class_hardware_bridge.html#ae259e674ae1cd4f3043fdd0236038617">_robotRunner</a>-&gt;<a class="code" href="../../d9/d42/class_robot_runner.html#a556fa8680fbd044ace2e0ac66db6c0ff">vectorNavData</a> = &amp;<a class="code" href="../../d0/dc5/class_mini_cheetah_hardware_bridge.html#aa99804e2d2e2041ab988f34f15e385ae">_vectorNavData</a>;</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;  <a class="code" href="../../d8/dd8/class_hardware_bridge.html#ae259e674ae1cd4f3043fdd0236038617">_robotRunner</a>-&gt;<a class="code" href="../../d9/d42/class_robot_runner.html#a1738f8f82abdedc10c25e0360fba2dec">controlParameters</a> = &amp;<a class="code" href="../../d8/dd8/class_hardware_bridge.html#ad52a70b35d6c19a736ea3287d974c66d">_robotParams</a>;</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;  <a class="code" href="../../d8/dd8/class_hardware_bridge.html#ae259e674ae1cd4f3043fdd0236038617">_robotRunner</a>-&gt;<a class="code" href="../../d9/d42/class_robot_runner.html#a8c74848e52f20b1294d650641f40ea4f">visualizationData</a> = &amp;<a class="code" href="../../d8/dd8/class_hardware_bridge.html#ac5270dbb17267e1ac3681ce92215296b">_visualizationData</a>;</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;  <a class="code" href="../../d8/dd8/class_hardware_bridge.html#ae259e674ae1cd4f3043fdd0236038617">_robotRunner</a>-&gt;<a class="code" href="../../d9/d42/class_robot_runner.html#ad49f79affbf6c35d4c8ac21a50cb8ae3">cheetahMainVisualization</a> = &amp;<a class="code" href="../../d8/dd8/class_hardware_bridge.html#af9442d44776906a9a3c9cea911784891">_mainCheetahVisualization</a>;</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;  <span class="keywordflow">while</span> (!<a class="code" href="../../d8/dd8/class_hardware_bridge.html#ad52a70b35d6c19a736ea3287d974c66d">_robotParams</a>.<a class="code" href="../../d8/d86/class_control_parameters.html#a12b144b3d659080b6e0bfd93569b566e">isFullyInitialized</a>()) {</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;    printf(<span class="stringliteral">&quot;[Hardware Bridge] Waiting for robot parameters...\n&quot;</span>);</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;    usleep(1000000);</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;  }</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;  <span class="keywordflow">if</span>(<a class="code" href="../../d8/dd8/class_hardware_bridge.html#ab8487082663e527210d4e1d89387902b">_userControlParameters</a>) {</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;    <span class="keywordflow">while</span> (!<a class="code" href="../../d8/dd8/class_hardware_bridge.html#ab8487082663e527210d4e1d89387902b">_userControlParameters</a>-&gt;<a class="code" href="../../d8/d86/class_control_parameters.html#a12b144b3d659080b6e0bfd93569b566e">isFullyInitialized</a>()) {</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;      printf(<span class="stringliteral">&quot;[Hardware Bridge] Waiting for user parameters...\n&quot;</span>);</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;      usleep(1000000);</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;    }</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;  }</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;  printf(<span class="stringliteral">&quot;[Hardware Bridge] Got all parameters, starting up!\n&quot;</span>);</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;  <a class="code" href="../../d8/dd8/class_hardware_bridge.html#ae259e674ae1cd4f3043fdd0236038617">_robotRunner</a>-&gt;<a class="code" href="../../d9/d42/class_robot_runner.html#affa2cfda073a7b1742561154c3081ae5">init</a>();</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;  <a class="code" href="../../d8/dd8/class_hardware_bridge.html#a80a343c681ff51562b875190a7b2f4dc">_firstRun</a> = <span class="keyword">false</span>;</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;  <span class="comment">// init control thread</span></div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;  <a class="code" href="../../d8/dd8/class_hardware_bridge.html#aa63048fffaaddf1c55a8f18a785396ec">statusTask</a>.<a class="code" href="../../de/d2f/class_periodic_task.html#a23a65ac2dff9750a0f0d6416f2f32a6f">start</a>();</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;  <span class="comment">// spi Task start</span></div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;  <a class="code" href="../../dd/de7/class_periodic_member_function.html">PeriodicMemberFunction&lt;MiniCheetahHardwareBridge&gt;</a> spiTask(</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;      &amp;<a class="code" href="../../d8/dd8/class_hardware_bridge.html#a0389f737fe143e8a4bbf9433c129d149">taskManager</a>, .002, <span class="stringliteral">&quot;spi&quot;</span>, &amp;<a class="code" href="../../d0/dc5/class_mini_cheetah_hardware_bridge.html#ac33018c7266f82d92828cfda21b9b6b2">MiniCheetahHardwareBridge::runSpi</a>, <span class="keyword">this</span>);</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;  spiTask.start();</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;  <span class="comment">// robot controller start</span></div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;  <a class="code" href="../../d8/dd8/class_hardware_bridge.html#ae259e674ae1cd4f3043fdd0236038617">_robotRunner</a>-&gt;<a class="code" href="../../de/d2f/class_periodic_task.html#a23a65ac2dff9750a0f0d6416f2f32a6f">start</a>();</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;  <span class="comment">// visualization start</span></div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;  <a class="code" href="../../dd/de7/class_periodic_member_function.html">PeriodicMemberFunction&lt;MiniCheetahHardwareBridge&gt;</a> visualizationLCMTask(</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;      &amp;<a class="code" href="../../d8/dd8/class_hardware_bridge.html#a0389f737fe143e8a4bbf9433c129d149">taskManager</a>, .0167, <span class="stringliteral">&quot;lcm-vis&quot;</span>,</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;      &amp;<a class="code" href="../../d8/dd8/class_hardware_bridge.html#a83a317be30bef73635e34beb19a303ac">MiniCheetahHardwareBridge::publishVisualizationLCM</a>, <span class="keyword">this</span>);</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;  visualizationLCMTask.start();</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;  <span class="comment">// rc controller</span></div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;  <a class="code" href="../../d8/dd8/class_hardware_bridge.html#aeb8b07d91413a757e0085ad8ac5fa300">_port</a> = <a class="code" href="../../d1/d95/rt__sbus_8h.html#a1f8bbf50154d9822f453616920c26127">init_sbus</a>(<span class="keyword">false</span>);  <span class="comment">// Not Simulation</span></div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;  <a class="code" href="../../dd/de7/class_periodic_member_function.html">PeriodicMemberFunction&lt;HardwareBridge&gt;</a> sbusTask(</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;      &amp;<a class="code" href="../../d8/dd8/class_hardware_bridge.html#a0389f737fe143e8a4bbf9433c129d149">taskManager</a>, .005, <span class="stringliteral">&quot;rc_controller&quot;</span>, &amp;<a class="code" href="../../d8/dd8/class_hardware_bridge.html#aa3e2460f9609470b32190353d9da2cd9">HardwareBridge::run_sbus</a>, <span class="keyword">this</span>);</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;  sbusTask.start();</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;  <span class="keywordflow">for</span> (;;) {</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;    usleep(1000000);</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;    <span class="comment">// printf(&quot;joy %f\n&quot;, _robotRunner-&gt;driverCommand-&gt;leftStickAnalog[0]);</span></div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;  }</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;}</div><div class="ttc" id="class_robot_runner_html_a13f4f83d3364befdad7a218f2c16afbb"><div class="ttname"><a href="../../d9/d42/class_robot_runner.html#a13f4f83d3364befdad7a218f2c16afbb">RobotRunner::spiCommand</a></div><div class="ttdeci">SpiCommand * spiCommand</div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d41/_robot_runner_8h_source.html#l00051">RobotRunner.h:51</a></div></div>
<div class="ttc" id="cpp_types_8h_html_a78d284d08fd22d809fd436256f2cbc39a590425b506eb87eff1a64ed14ffd1498"><div class="ttname"><a href="../../d9/d8e/cpp_types_8h.html#a78d284d08fd22d809fd436256f2cbc39a590425b506eb87eff1a64ed14ffd1498">RobotType::MINI_CHEETAH</a></div></div>
<div class="ttc" id="class_robot_runner_html_a58767b23c3b78f2d6f7a5af7474d39cf"><div class="ttname"><a href="../../d9/d42/class_robot_runner.html#a58767b23c3b78f2d6f7a5af7474d39cf">RobotRunner::spiData</a></div><div class="ttdeci">SpiData * spiData</div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d41/_robot_runner_8h_source.html#l00050">RobotRunner.h:50</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_ab8487082663e527210d4e1d89387902b"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#ab8487082663e527210d4e1d89387902b">HardwareBridge::_userControlParameters</a></div><div class="ttdeci">ControlParameters * _userControlParameters</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00067">HardwareBridge.h:67</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_a83a317be30bef73635e34beb19a303ac"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#a83a317be30bef73635e34beb19a303ac">HardwareBridge::publishVisualizationLCM</a></div><div class="ttdeci">void publishVisualizationLCM()</div><div class="ttdef"><b>Definition:</b> <a href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00305">HardwareBridge.cpp:305</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_a0928b007abfd50e0edc7d38de4bce932"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#a0928b007abfd50e0edc7d38de4bce932">HardwareBridge::_gamepadCommand</a></div><div class="ttdeci">GamepadCommand _gamepadCommand</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00052">HardwareBridge.h:52</a></div></div>
<div class="ttc" id="class_mini_cheetah_hardware_bridge_html_ac33018c7266f82d92828cfda21b9b6b2"><div class="ttname"><a href="../../d0/dc5/class_mini_cheetah_hardware_bridge.html#ac33018c7266f82d92828cfda21b9b6b2">MiniCheetahHardwareBridge::runSpi</a></div><div class="ttdeci">void runSpi()</div><div class="ttdef"><b>Definition:</b> <a href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00293">HardwareBridge.cpp:293</a></div></div>
<div class="ttc" id="class_robot_runner_html_a556fa8680fbd044ace2e0ac66db6c0ff"><div class="ttname"><a href="../../d9/d42/class_robot_runner.html#a556fa8680fbd044ace2e0ac66db6c0ff">RobotRunner::vectorNavData</a></div><div class="ttdeci">VectorNavData * vectorNavData</div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d41/_robot_runner_8h_source.html#l00048">RobotRunner.h:48</a></div></div>
<div class="ttc" id="class_control_parameters_html_a12b144b3d659080b6e0bfd93569b566e"><div class="ttname"><a href="../../d8/d86/class_control_parameters.html#a12b144b3d659080b6e0bfd93569b566e">ControlParameters::isFullyInitialized</a></div><div class="ttdeci">bool isFullyInitialized()</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/d01/_control_parameters_8h_source.html#l00403">ControlParameters.h:403</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_a80a343c681ff51562b875190a7b2f4dc"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#a80a343c681ff51562b875190a7b2f4dc">HardwareBridge::_firstRun</a></div><div class="ttdeci">bool _firstRun</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00061">HardwareBridge.h:61</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_a5ccd0cdd11a61439a08f8f7301f3294f"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#a5ccd0cdd11a61439a08f8f7301f3294f">HardwareBridge::_spiCommand</a></div><div class="ttdeci">SpiCommand _spiCommand</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00059">HardwareBridge.h:59</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_ac5270dbb17267e1ac3681ce92215296b"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#ac5270dbb17267e1ac3681ce92215296b">HardwareBridge::_visualizationData</a></div><div class="ttdeci">VisualizationData _visualizationData</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00053">HardwareBridge.h:53</a></div></div>
<div class="ttc" id="class_robot_runner_html_affa2cfda073a7b1742561154c3081ae5"><div class="ttname"><a href="../../d9/d42/class_robot_runner.html#affa2cfda073a7b1742561154c3081ae5">RobotRunner::init</a></div><div class="ttdeci">void init() override</div><div class="ttdef"><b>Definition:</b> <a href="../../db/d28/_robot_runner_8cpp_source.html#l00028">RobotRunner.cpp:28</a></div></div>
<div class="ttc" id="class_mini_cheetah_hardware_bridge_html_aa2ed52f47d4bfb659e1d4d74930774dc"><div class="ttname"><a href="../../d0/dc5/class_mini_cheetah_hardware_bridge.html#aa2ed52f47d4bfb659e1d4d74930774dc">MiniCheetahHardwareBridge::initHardware</a></div><div class="ttdeci">void initHardware()</div><div class="ttdef"><b>Definition:</b> <a href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00275">HardwareBridge.cpp:275</a></div></div>
<div class="ttc" id="class_robot_runner_html_ab68a04d6b506333426883633a6430656"><div class="ttname"><a href="../../d9/d42/class_robot_runner.html#ab68a04d6b506333426883633a6430656">RobotRunner::driverCommand</a></div><div class="ttdeci">GamepadCommand * driverCommand</div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d41/_robot_runner_8h_source.html#l00046">RobotRunner.h:46</a></div></div>
<div class="ttc" id="class_robot_runner_html_ad49f79affbf6c35d4c8ac21a50cb8ae3"><div class="ttname"><a href="../../d9/d42/class_robot_runner.html#ad49f79affbf6c35d4c8ac21a50cb8ae3">RobotRunner::cheetahMainVisualization</a></div><div class="ttdeci">CheetahVisualization * cheetahMainVisualization</div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d41/_robot_runner_8h_source.html#l00056">RobotRunner.h:56</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_aeb8b07d91413a757e0085ad8ac5fa300"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#aeb8b07d91413a757e0085ad8ac5fa300">HardwareBridge::_port</a></div><div class="ttdeci">int _port</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00069">HardwareBridge.h:69</a></div></div>
<div class="ttc" id="rt__sbus_8h_html_a1f8bbf50154d9822f453616920c26127"><div class="ttname"><a href="../../d1/d95/rt__sbus_8h.html#a1f8bbf50154d9822f453616920c26127">init_sbus</a></div><div class="ttdeci">int init_sbus(int is_simulator)</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/dad/rt__sbus_8cpp_source.html#l00119">rt_sbus.cpp:119</a></div></div>
<div class="ttc" id="class_robot_runner_html_a1738f8f82abdedc10c25e0360fba2dec"><div class="ttname"><a href="../../d9/d42/class_robot_runner.html#a1738f8f82abdedc10c25e0360fba2dec">RobotRunner::controlParameters</a></div><div class="ttdeci">RobotControlParameters * controlParameters</div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d41/_robot_runner_8h_source.html#l00054">RobotRunner.h:54</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_a4a8078bc3b30d7260281598990243262"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#a4a8078bc3b30d7260281598990243262">HardwareBridge::initCommon</a></div><div class="ttdeci">void initCommon()</div><div class="ttdef"><b>Definition:</b> <a href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00030">HardwareBridge.cpp:30</a></div></div>
<div class="ttc" id="class_periodic_member_function_html"><div class="ttname"><a href="../../dd/de7/class_periodic_member_function.html">PeriodicMemberFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="../../dc/d87/_periodic_task_8h_source.html#l00109">PeriodicTask.h:109</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_aa700e6321dfd8badb647e198349d3fb7"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#aa700e6321dfd8badb647e198349d3fb7">HardwareBridge::_spiData</a></div><div class="ttdeci">SpiData _spiData</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00058">HardwareBridge.h:58</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_aa63048fffaaddf1c55a8f18a785396ec"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#aa63048fffaaddf1c55a8f18a785396ec">HardwareBridge::statusTask</a></div><div class="ttdeci">PrintTaskStatus statusTask</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00051">HardwareBridge.h:51</a></div></div>
<div class="ttc" id="class_mini_cheetah_hardware_bridge_html_aa99804e2d2e2041ab988f34f15e385ae"><div class="ttname"><a href="../../d0/dc5/class_mini_cheetah_hardware_bridge.html#aa99804e2d2e2041ab988f34f15e385ae">MiniCheetahHardwareBridge::_vectorNavData</a></div><div class="ttdeci">VectorNavData _vectorNavData</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00082">HardwareBridge.h:82</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_a0389f737fe143e8a4bbf9433c129d149"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#a0389f737fe143e8a4bbf9433c129d149">HardwareBridge::taskManager</a></div><div class="ttdeci">PeriodicTaskManager taskManager</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00050">HardwareBridge.h:50</a></div></div>
<div class="ttc" id="class_robot_runner_html_a8c74848e52f20b1294d650641f40ea4f"><div class="ttname"><a href="../../d9/d42/class_robot_runner.html#a8c74848e52f20b1294d650641f40ea4f">RobotRunner::visualizationData</a></div><div class="ttdeci">VisualizationData * visualizationData</div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d41/_robot_runner_8h_source.html#l00055">RobotRunner.h:55</a></div></div>
<div class="ttc" id="class_periodic_task_html_a23a65ac2dff9750a0f0d6416f2f32a6f"><div class="ttname"><a href="../../de/d2f/class_periodic_task.html#a23a65ac2dff9750a0f0d6416f2f32a6f">PeriodicTask::start</a></div><div class="ttdeci">void start()</div><div class="ttdef"><b>Definition:</b> <a href="../../de/df7/_periodic_task_8cpp_source.html#l00020">PeriodicTask.cpp:20</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_ad52a70b35d6c19a736ea3287d974c66d"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#ad52a70b35d6c19a736ea3287d974c66d">HardwareBridge::_robotParams</a></div><div class="ttdeci">RobotControlParameters _robotParams</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00063">HardwareBridge.h:63</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_ae259e674ae1cd4f3043fdd0236038617"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#ae259e674ae1cd4f3043fdd0236038617">HardwareBridge::_robotRunner</a></div><div class="ttdeci">RobotRunner * _robotRunner</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00062">HardwareBridge.h:62</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_af9442d44776906a9a3c9cea911784891"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#af9442d44776906a9a3c9cea911784891">HardwareBridge::_mainCheetahVisualization</a></div><div class="ttdeci">CheetahVisualization _mainCheetahVisualization</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00054">HardwareBridge.h:54</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_aa3e2460f9609470b32190353d9da2cd9"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#aa3e2460f9609470b32190353d9da2cd9">HardwareBridge::run_sbus</a></div><div class="ttdeci">void run_sbus()</div><div class="ttdef"><b>Definition:</b> <a href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00266">HardwareBridge.cpp:266</a></div></div>
<div class="ttc" id="class_robot_runner_html_ac36f7f6395167f998afe23f6d4f86c82"><div class="ttname"><a href="../../d9/d42/class_robot_runner.html#ac36f7f6395167f998afe23f6d4f86c82">RobotRunner::robotType</a></div><div class="ttdeci">RobotType robotType</div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d41/_robot_runner_8h_source.html#l00047">RobotRunner.h:47</a></div></div>
</div><!-- fragment -->
<p><div id="dynsection-4" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-4-trigger" src="../../closed.png" alt="+"/> Here is the call graph for this function:</div>
<div id="dynsection-4-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-4-content" class="dyncontent" style="display:none;">
<div class="center"><img src="../../d0/dc5/class_mini_cheetah_hardware_bridge_a685c0e118f44327e7734119bd232d484_cgraph.png" border="0" usemap="#d0/dc5/class_mini_cheetah_hardware_bridge_a685c0e118f44327e7734119bd232d484_cgraph" alt=""/></div>
<map name="d0/dc5/class_mini_cheetah_hardware_bridge_a685c0e118f44327e7734119bd232d484_cgraph" id="d0/dc5/class_mini_cheetah_hardware_bridge_a685c0e118f44327e7734119bd232d484_cgraph">
</map>
</div>
</p>

<p><div id="dynsection-5" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-5-trigger" src="../../closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-5-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-5-content" class="dyncontent" style="display:none;">
<div class="center"><img src="../../d0/dc5/class_mini_cheetah_hardware_bridge_a685c0e118f44327e7734119bd232d484_icgraph.png" border="0" usemap="#d0/dc5/class_mini_cheetah_hardware_bridge_a685c0e118f44327e7734119bd232d484_icgraph" alt=""/></div>
<map name="d0/dc5/class_mini_cheetah_hardware_bridge_a685c0e118f44327e7734119bd232d484_icgraph" id="d0/dc5/class_mini_cheetah_hardware_bridge_a685c0e118f44327e7734119bd232d484_icgraph">
</map>
</div>
</p>

</div>
</div>
<a class="anchor" id="ac33018c7266f82d92828cfda21b9b6b2"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void MiniCheetahHardwareBridge::runSpi </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00293">293</a> of file <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html">HardwareBridge.cpp</a>.</p>

<p>References <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00059">HardwareBridge::_spiCommand</a>, <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00058">HardwareBridge::_spiData</a>, <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00083">_spiLcm</a>, <a class="el" href="../../d1/d62/rt__spi_8cpp_source.html#l00332">get_spi_command()</a>, <a class="el" href="../../d1/d62/rt__spi_8cpp_source.html#l00337">get_spi_data()</a>, and <a class="el" href="../../d1/d62/rt__spi_8cpp_source.html#l00319">spi_driver_run()</a>.</p>
<div class="fragment"><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;                                       {</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;  spi_command_t* cmd = <a class="code" href="../../d0/dae/rt__spi_8h.html#a3e61e97e0ec55d0c36c2883793c12c08">get_spi_command</a>();</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;  spi_data_t* data = <a class="code" href="../../d0/dae/rt__spi_8h.html#a86aa57487cebed6685ec3a22729662e6">get_spi_data</a>();</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;  memcpy(cmd, &amp;<a class="code" href="../../d8/dd8/class_hardware_bridge.html#a5ccd0cdd11a61439a08f8f7301f3294f">_spiCommand</a>, <span class="keyword">sizeof</span>(spi_command_t));</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;  <a class="code" href="../../d0/dae/rt__spi_8h.html#a684e8d785e723147c81388a694a72454">spi_driver_run</a>();</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;  memcpy(&amp;<a class="code" href="../../d8/dd8/class_hardware_bridge.html#aa700e6321dfd8badb647e198349d3fb7">_spiData</a>, data, <span class="keyword">sizeof</span>(spi_data_t));</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;</div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;  <a class="code" href="../../d0/dc5/class_mini_cheetah_hardware_bridge.html#acfed6143e7864dcb64345e22223455c1">_spiLcm</a>.publish(<span class="stringliteral">&quot;spi_data&quot;</span>, data);</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;  <a class="code" href="../../d0/dc5/class_mini_cheetah_hardware_bridge.html#acfed6143e7864dcb64345e22223455c1">_spiLcm</a>.publish(<span class="stringliteral">&quot;spi_command&quot;</span>, cmd);</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;}</div><div class="ttc" id="class_mini_cheetah_hardware_bridge_html_acfed6143e7864dcb64345e22223455c1"><div class="ttname"><a href="../../d0/dc5/class_mini_cheetah_hardware_bridge.html#acfed6143e7864dcb64345e22223455c1">MiniCheetahHardwareBridge::_spiLcm</a></div><div class="ttdeci">lcm::LCM _spiLcm</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00083">HardwareBridge.h:83</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_a5ccd0cdd11a61439a08f8f7301f3294f"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#a5ccd0cdd11a61439a08f8f7301f3294f">HardwareBridge::_spiCommand</a></div><div class="ttdeci">SpiCommand _spiCommand</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00059">HardwareBridge.h:59</a></div></div>
<div class="ttc" id="rt__spi_8h_html_a684e8d785e723147c81388a694a72454"><div class="ttname"><a href="../../d0/dae/rt__spi_8h.html#a684e8d785e723147c81388a694a72454">spi_driver_run</a></div><div class="ttdeci">void spi_driver_run()</div><div class="ttdef"><b>Definition:</b> <a href="../../d1/d62/rt__spi_8cpp_source.html#l00319">rt_spi.cpp:319</a></div></div>
<div class="ttc" id="rt__spi_8h_html_a86aa57487cebed6685ec3a22729662e6"><div class="ttname"><a href="../../d0/dae/rt__spi_8h.html#a86aa57487cebed6685ec3a22729662e6">get_spi_data</a></div><div class="ttdeci">spi_data_t * get_spi_data()</div><div class="ttdef"><b>Definition:</b> <a href="../../d1/d62/rt__spi_8cpp_source.html#l00337">rt_spi.cpp:337</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_aa700e6321dfd8badb647e198349d3fb7"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#aa700e6321dfd8badb647e198349d3fb7">HardwareBridge::_spiData</a></div><div class="ttdeci">SpiData _spiData</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00058">HardwareBridge.h:58</a></div></div>
<div class="ttc" id="rt__spi_8h_html_a3e61e97e0ec55d0c36c2883793c12c08"><div class="ttname"><a href="../../d0/dae/rt__spi_8h.html#a3e61e97e0ec55d0c36c2883793c12c08">get_spi_command</a></div><div class="ttdeci">spi_command_t * get_spi_command()</div><div class="ttdef"><b>Definition:</b> <a href="../../d1/d62/rt__spi_8cpp_source.html#l00332">rt_spi.cpp:332</a></div></div>
</div><!-- fragment -->
<p><div id="dynsection-6" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-6-trigger" src="../../closed.png" alt="+"/> Here is the call graph for this function:</div>
<div id="dynsection-6-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-6-content" class="dyncontent" style="display:none;">
<div class="center"><img src="../../d0/dc5/class_mini_cheetah_hardware_bridge_ac33018c7266f82d92828cfda21b9b6b2_cgraph.png" border="0" usemap="#d0/dc5/class_mini_cheetah_hardware_bridge_ac33018c7266f82d92828cfda21b9b6b2_cgraph" alt=""/></div>
<map name="d0/dc5/class_mini_cheetah_hardware_bridge_ac33018c7266f82d92828cfda21b9b6b2_cgraph" id="d0/dc5/class_mini_cheetah_hardware_bridge_ac33018c7266f82d92828cfda21b9b6b2_cgraph">
</map>
</div>
</p>

<p><div id="dynsection-7" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-7-trigger" src="../../closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-7-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-7-content" class="dyncontent" style="display:none;">
<div class="center"><img src="../../d0/dc5/class_mini_cheetah_hardware_bridge_ac33018c7266f82d92828cfda21b9b6b2_icgraph.png" border="0" usemap="#d0/dc5/class_mini_cheetah_hardware_bridge_ac33018c7266f82d92828cfda21b9b6b2_icgraph" alt=""/></div>
<map name="d0/dc5/class_mini_cheetah_hardware_bridge_ac33018c7266f82d92828cfda21b9b6b2_icgraph" id="d0/dc5/class_mini_cheetah_hardware_bridge_ac33018c7266f82d92828cfda21b9b6b2_icgraph">
</map>
</div>
</p>

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="acfed6143e7864dcb64345e22223455c1"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">lcm::LCM MiniCheetahHardwareBridge::_spiLcm</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00083">83</a> of file <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html">HardwareBridge.h</a>.</p>

</div>
</div>
<a class="anchor" id="aa99804e2d2e2041ab988f34f15e385ae"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../df/d06/struct_vector_nav_data.html">VectorNavData</a> MiniCheetahHardwareBridge::_vectorNavData</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00082">82</a> of file <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html">HardwareBridge.h</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html">HardwareBridge.h</a></li>
<li><a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html">HardwareBridge.cpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="../../d0/dc5/class_mini_cheetah_hardware_bridge.html">MiniCheetahHardwareBridge</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
  </ul>
</div>
</body>
</html>
